1 Figure 1

xeno_umap_patients = readRDS("./Figures/xeno_patient_umap.rds")
xeno_umap_treatment = readRDS("./Figures/xeno_treatment_umap.rds")
xeno_deg = readRDS("./Figures/xeno_DEG_GSEA_up.rds")
xeno_sipsic_heatmap = readRDS("./Figures/xeno_sipsic_heatmap.rds")
p1 = cowplot::plot_grid(xeno_umap_treatment,xeno_umap_patients,xeno_deg,ncol = 1,nrow = 3,labels = c("B","C","E"))
p2 = cowplot::plot_grid(NULL,xeno_sipsic_heatmap,ncol = 1,nrow = 2,labels = c("A","D"))
p3 = cowplot::plot_grid(p2,p1,nrow = 1,ncol = 2)
p3

pdf("./final_figures/fig1.pdf",width = 15,height = 15)
p3
dev.off()
null device 
          1 

2 Figure 2

xeno_nmf_heatmap = readRDS("./Figures/xeno_NMF_programs_heatmap.rds")
xeno_nmf_usage_UMAP = readRDS("./Figures/xeno_NMF_usage_UMAP.rds")
p = cowplot::plot_grid(xeno_nmf_usage_UMAP,xeno_nmf_heatmap,ncol = 1,labels = "AUTO")
p

pdf("./final_figures/fig2.pdf",width = 12,height = 17)
p
dev.off()
null device 
          1 

3 Figure 3

xeno_nmf_GSEA = readRDS("./Figures/xeno_nmf_GSEA.rds")
xeno_NMF_programs_dotplot = readRDS("./Figures/xeno_NMF_programs_dotplot.rds")
xeno_NMF_hypoxia_split_violin = readRDS("./Figures/xeno_NMF_hypoxia_split_violin.rds")
p1 = cowplot::plot_grid(xeno_NMF_programs_dotplot,xeno_NMF_hypoxia_split_violin, ncol = 1,labels = c("B","C"))
p = cowplot::plot_grid(xeno_nmf_GSEA,p1, ncol = 2,labels = c("A",NULL,NULL), rel_widths = c(1.5, 1))
p

pdf("./final_figures/fig3.pdf",width = 22,height = 12)
p
dev.off()
null device 
          1 

4 Figure 4

patients_nmf_usage_umap = readRDS("./Figures/patients_nmf_usage_umap.rds")
bivona_nmf_usage_umap =  readRDS("./Figures/bivona_nmf_usage_umap.rds")

bivona_nmf_dotplot = readRDS("./Figures/bivona_nmf_dotplot.rds")
bivona_nmf_violin = readRDS("./Figures/bivona_nmf_violin.rds")

patients_nmf_usage_dotplot =  readRDS("./Figures/patients_nmf_usage_dotplot.rds")
patients_nmf_hypoxia_violin = readRDS("./Figures/patients_nmf_hypoxia_violin.rds")
p1 = cowplot::plot_grid(bivona_nmf_usage_umap,patients_nmf_usage_umap, bivona_nmf_dotplot,patients_nmf_usage_dotplot,bivona_nmf_violin,patients_nmf_hypoxia_violin,nrow = 3, ncol = 2,labels = "AUTO",rel_heights = c(1.5,1,1))

p1

pdf("./final_figures/fig4.pdf",width = 19,height = 17)
p1
dev.off()
null device 
          1 

5 Fig 4 sup


bivona_known_genes_violin = readRDS("./Figures/bivona_hif_targets_violin.rds")
bivona_known_genes_dotplot = readRDS("./Figures/bivona_known_genes_dotplot.rds")

patients_hif_targets_violin = readRDS("./Figures/patients_hif_targets_violin.rds")
patients_signtures_dotplot =  readRDS("./Figures/patients_signtures_dotplot.rds")

xeno_signtures_dotplot = readRDS("./Figures/xeno_signtures_dotplot.rds")
xeno_hif_targets_violin = readRDS("./Figures/xeno_hif_targets_violin.rds")
p1 = cowplot::plot_grid(xeno_signtures_dotplot,patients_signtures_dotplot,bivona_known_genes_dotplot,xeno_hif_targets_violin,patients_hif_targets_violin,bivona_known_genes_violin,labels = "AUTO")

p1

pdf("./final_figures/fig4_sup.pdf",width = 24,height = 8)
p1
dev.off()
null device 
          1 
LS0tCnRpdGxlOiAnYHIgcnN0dWRpb2FwaTo6Z2V0U291cmNlRWRpdG9yQ29udGV4dCgpJHBhdGggJT4lIGJhc2VuYW1lKCkgJT4lIGdzdWIocGF0dGVybiA9ICJcXC5SbWQiLHJlcGxhY2VtZW50ID0gIiIpYCcgCmF1dGhvcjogIkF2aXNoYWkgV2l6ZWwiCmRhdGU6ICdgciBTeXMudGltZSgpYCcKb3V0cHV0OiAKICBodG1sX25vdGVib29rOiAKICAgIGNvZGVfZm9sZGluZzogaGlkZQogICAgdG9jOiB5ZXMKICAgIHRvY19jb2xsYXBzZTogeWVzCiAgICB0b2NfZmxvYXQ6IAogICAgICBjb2xsYXBzZWQ6IEZBTFNFCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUKICAgIHRvY19kZXB0aDogMQotLS0KCgoKIyBGaWd1cmUgMQoKCmBgYHtyfQp4ZW5vX3VtYXBfcGF0aWVudHMgPSByZWFkUkRTKCIuL0ZpZ3VyZXMveGVub19wYXRpZW50X3VtYXAucmRzIikKeGVub191bWFwX3RyZWF0bWVudCA9IHJlYWRSRFMoIi4vRmlndXJlcy94ZW5vX3RyZWF0bWVudF91bWFwLnJkcyIpCnhlbm9fZGVnID0gcmVhZFJEUygiLi9GaWd1cmVzL3hlbm9fREVHX0dTRUFfdXAucmRzIikKeGVub19zaXBzaWNfaGVhdG1hcCA9IHJlYWRSRFMoIi4vRmlndXJlcy94ZW5vX3NpcHNpY19oZWF0bWFwLnJkcyIpCgpgYGAKCgpgYGB7ciBmaWcuaGVpZ2h0PTE1LCBmaWcud2lkdGg9MTV9CnAxID0gY293cGxvdDo6cGxvdF9ncmlkKHhlbm9fdW1hcF90cmVhdG1lbnQseGVub191bWFwX3BhdGllbnRzLHhlbm9fZGVnLG5jb2wgPSAxLG5yb3cgPSAzLGxhYmVscyA9IGMoIkIiLCJDIiwiRSIpKQpwMiA9IGNvd3Bsb3Q6OnBsb3RfZ3JpZChOVUxMLHhlbm9fc2lwc2ljX2hlYXRtYXAsbmNvbCA9IDEsbnJvdyA9IDIsbGFiZWxzID0gYygiQSIsIkQiKSkKcDMgPSBjb3dwbG90OjpwbG90X2dyaWQocDIscDEsbnJvdyA9IDEsbmNvbCA9IDIpCnAzCmBgYAoKCmBgYHtyfQpwZGYoIi4vZmluYWxfZmlndXJlcy9maWcxLnBkZiIsd2lkdGggPSAxNSxoZWlnaHQgPSAxNSkKcDMKZGV2Lm9mZigpCmBgYAoKIyBGaWd1cmUgMgoKCmBgYHtyfQp4ZW5vX25tZl9oZWF0bWFwID0gcmVhZFJEUygiLi9GaWd1cmVzL3hlbm9fTk1GX3Byb2dyYW1zX2hlYXRtYXAucmRzIikKeGVub19ubWZfdXNhZ2VfVU1BUCA9IHJlYWRSRFMoIi4vRmlndXJlcy94ZW5vX05NRl91c2FnZV9VTUFQLnJkcyIpCgpgYGAKCgpgYGB7ciBmaWcuaGVpZ2h0PTE3LCBmaWcud2lkdGg9MTJ9CnAgPSBjb3dwbG90OjpwbG90X2dyaWQoeGVub19ubWZfdXNhZ2VfVU1BUCx4ZW5vX25tZl9oZWF0bWFwLG5jb2wgPSAxLGxhYmVscyA9ICJBVVRPIikKcApgYGAKYGBge3J9CnBkZigiLi9maW5hbF9maWd1cmVzL2ZpZzIucGRmIix3aWR0aCA9IDEyLGhlaWdodCA9IDE3KQpwCmRldi5vZmYoKQpgYGAKIyBGaWd1cmUgMwoKYGBge3J9Cnhlbm9fbm1mX0dTRUEgPSByZWFkUkRTKCIuL0ZpZ3VyZXMveGVub19ubWZfR1NFQS5yZHMiKQp4ZW5vX05NRl9wcm9ncmFtc19kb3RwbG90ID0gcmVhZFJEUygiLi9GaWd1cmVzL3hlbm9fTk1GX3Byb2dyYW1zX2RvdHBsb3QucmRzIikKeGVub19OTUZfaHlwb3hpYV9zcGxpdF92aW9saW4gPSByZWFkUkRTKCIuL0ZpZ3VyZXMveGVub19OTUZfaHlwb3hpYV9zcGxpdF92aW9saW4ucmRzIikKYGBgCgpgYGB7ciBmaWcuaGVpZ2h0PTEyLCBmaWcud2lkdGg9MjF9CnAxID0gY293cGxvdDo6cGxvdF9ncmlkKHhlbm9fTk1GX3Byb2dyYW1zX2RvdHBsb3QseGVub19OTUZfaHlwb3hpYV9zcGxpdF92aW9saW4sIG5jb2wgPSAxLGxhYmVscyA9IGMoIkIiLCJDIikpCnAgPSBjb3dwbG90OjpwbG90X2dyaWQoeGVub19ubWZfR1NFQSxwMSwgbmNvbCA9IDIsbGFiZWxzID0gYygiQSIsTlVMTCxOVUxMKSwgcmVsX3dpZHRocyA9IGMoMS41LCAxKSkKcApgYGAKCmBgYHtyfQpwZGYoIi4vZmluYWxfZmlndXJlcy9maWczLnBkZiIsd2lkdGggPSAyMixoZWlnaHQgPSAxMikKcApkZXYub2ZmKCkKYGBgCgojIEZpZ3VyZSA0CgpgYGB7cn0KcGF0aWVudHNfbm1mX3VzYWdlX3VtYXAgPSByZWFkUkRTKCIuL0ZpZ3VyZXMvcGF0aWVudHNfbm1mX3VzYWdlX3VtYXAucmRzIikKYml2b25hX25tZl91c2FnZV91bWFwID0gIHJlYWRSRFMoIi4vRmlndXJlcy9iaXZvbmFfbm1mX3VzYWdlX3VtYXAucmRzIikKCmJpdm9uYV9ubWZfZG90cGxvdCA9IHJlYWRSRFMoIi4vRmlndXJlcy9iaXZvbmFfbm1mX2RvdHBsb3QucmRzIikKYml2b25hX25tZl92aW9saW4gPSByZWFkUkRTKCIuL0ZpZ3VyZXMvYml2b25hX25tZl92aW9saW4ucmRzIikKCnBhdGllbnRzX25tZl91c2FnZV9kb3RwbG90ID0gIHJlYWRSRFMoIi4vRmlndXJlcy9wYXRpZW50c19ubWZfdXNhZ2VfZG90cGxvdC5yZHMiKQpwYXRpZW50c19ubWZfaHlwb3hpYV92aW9saW4gPSByZWFkUkRTKCIuL0ZpZ3VyZXMvcGF0aWVudHNfbm1mX2h5cG94aWFfdmlvbGluLnJkcyIpCmBgYAoKYGBge3IgZmlnLmhlaWdodD0xNywgZmlnLndpZHRoPTE3fQpwMSA9IGNvd3Bsb3Q6OnBsb3RfZ3JpZChiaXZvbmFfbm1mX3VzYWdlX3VtYXAscGF0aWVudHNfbm1mX3VzYWdlX3VtYXAsIGJpdm9uYV9ubWZfZG90cGxvdCxwYXRpZW50c19ubWZfdXNhZ2VfZG90cGxvdCxiaXZvbmFfbm1mX3Zpb2xpbixwYXRpZW50c19ubWZfaHlwb3hpYV92aW9saW4sbnJvdyA9IDMsIG5jb2wgPSAyLGxhYmVscyA9ICJBVVRPIixyZWxfaGVpZ2h0cyA9IGMoMS41LDEsMSkpCgpwMQpgYGAKCmBgYHtyfQpwZGYoIi4vZmluYWxfZmlndXJlcy9maWc0LnBkZiIsd2lkdGggPSAxOSxoZWlnaHQgPSAxNykKcDEKZGV2Lm9mZigpCmBgYAoKIyBGaWcgNCBzdXAKYGBge3J9CgpiaXZvbmFfa25vd25fZ2VuZXNfdmlvbGluID0gcmVhZFJEUygiLi9GaWd1cmVzL2Jpdm9uYV9oaWZfdGFyZ2V0c192aW9saW4ucmRzIikKYml2b25hX2tub3duX2dlbmVzX2RvdHBsb3QgPSByZWFkUkRTKCIuL0ZpZ3VyZXMvYml2b25hX2tub3duX2dlbmVzX2RvdHBsb3QucmRzIikKCnBhdGllbnRzX2hpZl90YXJnZXRzX3Zpb2xpbiA9IHJlYWRSRFMoIi4vRmlndXJlcy9wYXRpZW50c19oaWZfdGFyZ2V0c192aW9saW4ucmRzIikKcGF0aWVudHNfc2lnbnR1cmVzX2RvdHBsb3QgPSAgcmVhZFJEUygiLi9GaWd1cmVzL3BhdGllbnRzX3NpZ250dXJlc19kb3RwbG90LnJkcyIpCgp4ZW5vX3NpZ250dXJlc19kb3RwbG90ID0gcmVhZFJEUygiLi9GaWd1cmVzL3hlbm9fc2lnbnR1cmVzX2RvdHBsb3QucmRzIikKeGVub19oaWZfdGFyZ2V0c192aW9saW4gPSByZWFkUkRTKCIuL0ZpZ3VyZXMveGVub19oaWZfdGFyZ2V0c192aW9saW4ucmRzIikKYGBgCgoKYGBge3IgZmlnLmhlaWdodD04LCBmaWcud2lkdGg9MjR9CnAxID0gY293cGxvdDo6cGxvdF9ncmlkKHhlbm9fc2lnbnR1cmVzX2RvdHBsb3QscGF0aWVudHNfc2lnbnR1cmVzX2RvdHBsb3QsYml2b25hX2tub3duX2dlbmVzX2RvdHBsb3QseGVub19oaWZfdGFyZ2V0c192aW9saW4scGF0aWVudHNfaGlmX3RhcmdldHNfdmlvbGluLGJpdm9uYV9rbm93bl9nZW5lc192aW9saW4sbGFiZWxzID0gIkFVVE8iKQoKcDEKYGBgCgoKYGBge3J9CnBkZigiLi9maW5hbF9maWd1cmVzL2ZpZzRfc3VwLnBkZiIsd2lkdGggPSAyNCxoZWlnaHQgPSA4KQpwMQpkZXYub2ZmKCkKYGBg